#include <iostream>
#include <unistd.h>
#include <signal.h>
#include <sys/types.h>
#include <stdlib.h>

//typedef void (*sighandler_t)(int);
sigset_t pending;
void MyHandler(int signo)
{
    std::cout << "收到2号信号,并进入信号处理时的pending图" << sigismember(&pending,2) << std::endl; 
    sleep(1);
}

int main()
{
    //简单来验证以下pending表的改变顺序,以2号信号为例
    // signal(2,MyHandler);
    // sigemptyset(&pending);
    // while(1)
    // {
    //     std::cout << "没2号信号时的pending图:" << sigismember(&pending,2) << std::endl;
    //     sleep(1);
    // }

    //验证一下9号信号是否能被屏蔽，被忽略，被自定义捕捉
    signal(SIGKILL,SIG_IGN);//被忽略
    signal(SIGKILL,MyHandler);//被自定义捕捉
    sigset_t block;
    sigemptyset(&block);
    sigaddset(&block,9);
    sigprocmask(SIG_SETMASK,&block,nullptr);//被屏蔽
    while(1);
    return 0;
}